// TODO
//  统计一座城市（10万或100万人口)中男女人数，以及男性中消费额最高和最低的，女性中消费额最高和最低的。
//  (1)使用上题生成的消费数据。
//  (2)将男女信息从源数据进行分离，得到两个RDD.
//  (3)分别对男女信息进行映射，使其只包含消费数据，得到两个RDD。
//  (4)对这两个RDD进行排序，进而得到最高和最低的消费额。


import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

object 上机03 {
  def main(args: Array[String]): Unit = {

    val config: SparkConf = new SparkConf().setMaster("local[*]").setAppName("")

    val sc = new SparkContext(config)

    val rddIn = sc.textFile("in/02.txt").map(_.split(","))

    val groupedRDD: RDD[(String, Iterable[Float])] = rddIn.groupBy(_ (1))
//      .map(tuple => (tuple._1, tuple._2.map(arr => Array(arr(0), arr(2)))))
      .map(tuple => (tuple._1, tuple._2.map(_(2).toFloat)))

    val femaleRDD: RDD[Float] = groupedRDD.filter(_._1 == "F").map(_._2).flatMap(x=>x).sortBy(x=>x)
    val maleRDD: RDD[Float] = groupedRDD.filter(_._1 == "M").map(_._2).flatMap(x=>x).sortBy(x=>x)


    println("femaleMin:"+femaleRDD.min())
    println("femaleMax:"+femaleRDD.max())
    println("maleMin:"+maleRDD.min())
    println("maleMax:"+maleRDD.max())

//    rddIn.foreach(arr => println(arr.mkString(",")))

  }

}
